home *** CD-ROM | disk | FTP | other *** search
/ Die Ultimative Software-P…i Collection 1996 & 1997 / Die Ultimative Software-Pakete CD-ROM fur Atari Collection 1996 & 1997.iso / w / wissensc / funktion / quelle / gemhelp.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1996-09-18  |  5.6 KB  |  211 lines

  1. {-----------------------------------------------------------------------------}
  2. { In diesem Modul sind sämtliche Hilfsroutinen zur einfachen GEM-Verwaltung   }
  3. { enthalten.                                                                  }
  4. {                                                                             }
  5. { (c) WURMSOFTWARE im Mai 1987                                                }
  6. {-----------------------------------------------------------------------------}
  7.  
  8. {========================     AES - Calls    =================================}
  9.  
  10. PROCEDURE AES_Call (    op       : integer ;
  11.                     VAR int_in   : Int_In_Parms ;
  12.                     VAR int_out  : Int_Out_Parms ;
  13.                     VAR addr_in  : Addr_In_Parms ;
  14.                     VAR addr_out : Addr_Out_Parms ) ; EXTERNAL ;
  15.  
  16.  
  17. {------ AES-Calls : Objc_Draw ------------------------------------------------}
  18.  
  19. PROCEDURE Objc_Draw (VAR Ptr : Dialog_Ptr) ;
  20.  
  21.  BEGIN
  22.   int_in[0] := 0 ;
  23.   int_in[1] := 4 ;
  24.   int_in[2] := 0 ;
  25.   int_in[3] := 0 ;
  26.   int_in[4] := 639 ;
  27.   int_in[5] := 399 ;
  28.   addr_in[0] := Ptr ;
  29.   AES_Call (42, int_in, int_out, addr_in, addr_out) ;
  30.  END ;
  31.  
  32.  
  33. {------ AES-Calls : Mouse_State ----------------------------------------------}
  34.  
  35. PROCEDURE Mouse_State (VAR x, y, butt, key : integer) ;
  36.  
  37.  BEGIN
  38.   AES_Call (79, int_in, int_out, addr_in, addr_out) ;
  39.   x    := int_out[1] ;
  40.   y    := int_out[2] ;
  41.   butt := int_out[3] ;
  42.   key  := int_out[4] ;
  43.  END ;
  44.  
  45.  
  46. {=========================  Dialog - Verwaltung ==============================}
  47.  
  48. {---- Test_Button : Testet, ob Button gesetzt und setzt Flag -----------------}
  49.  
  50. PROCEDURE Test_Button (    zeiger : Dialog_Ptr ; item : integer ;
  51.                        VAR flag   : boolean    ) ;
  52.  
  53.  BEGIN
  54.   IF Obj_State (zeiger, item) & Selected <> 0 THEN
  55.    flag := true
  56.   ELSE
  57.    flag := false ;
  58.  END ;
  59.  
  60.  
  61. {---- Zahl_Einlesen : Holt Zahl von Edit_Feld --------------------------------}
  62.  
  63. FUNCTION  Zahl_Einlesen (    zeiger : Dialog_Ptr ; item : integer ;
  64.                          VAR erg    : real       )      : boolean ;
  65.  
  66.  VAR  lauf              : integer ;
  67.       wert_str          : str255 ;
  68.       falsch            : boolean ;
  69.  
  70.  BEGIN
  71.   Get_DEdit (zeiger, item, wert_str) ;
  72.   FOR lauf := 1 TO LENGTH (wert_str) DO
  73.    IF NOT (wert_str[lauf] IN ['0'..'9','e','E','.','+','-']) THEN
  74.     Zahl_Einlesen := false
  75.    ELSE
  76.     Zahl_Einlesen := Zahl_Auswerten (wert_str, erg) ;
  77.  END ;
  78.  
  79.  
  80. {---- Do_Abbruch -------------------------------------------------------------}
  81.  
  82. PROCEDURE Do_Abbruch ;
  83.  
  84.  BEGIN
  85.   button := Do_Alert ('[2][ Wirklich abbrechen ? ][ Ja | Nein ]', 1) ;
  86.   IF button = 1 THEN
  87.    BEGIN
  88.     Close_Window (window) ;
  89.     Delete_Window (window) ;
  90.     Erase_Menu (menu_zei) ;
  91.     Delete_Menu (menu_zei) ;
  92.     Delete_Dialog (info_zei) ;
  93.     Delete_Dialog (lauf_zei) ;
  94.     Delete_Dialog (fktein_zei) ;
  95.     Delete_Dialog (werte_zei) ;
  96.     Delete_Dialog (koein_zei) ;
  97.     Delete_Dialog (darst_zei) ;
  98.     Delete_Dialog (drucker_zei) ;
  99.     Delete_Dialog (help_zei) ;
  100.     Delete_Dialog (warten_zei) ;
  101.     Delete_Dialog (w1_zei) ;
  102.     Delete_Dialog (w2_zei) ;
  103.     Delete_Dialog (ausgabe_zei) ;
  104.     Free_Resource ;
  105.     Exit_Gem ;
  106.     Halt ;
  107.    END ;
  108.  END ;
  109.  
  110.  
  111. {---- Do_Show_Wurminfo -------------------------------------------------------}
  112.  
  113. PROCEDURE Do_Show_Wurminfo ;
  114.  
  115.  BEGIN
  116.   pushed := Do_Dialog (w1_zei, 0) ;
  117.   Obj_SetState (w1_zei, pushed, normal, true) ;
  118.   pushed := Do_Dialog (w2_zei, 0) ;
  119.   Obj_SetState (w2_zei, pushed, normal, true) ;
  120.   End_Dialog (w1_zei) ;
  121.   End_Dialog (w2_zei) ;
  122.  END ;
  123.  
  124.  
  125. {---- Do_Show_Info -----------------------------------------------------------}
  126.  
  127. PROCEDURE Do_Show_Info ;
  128.  
  129.  BEGIN
  130.   pushed := Do_Dialog (info_zei, 0) ;
  131.   Obj_SetState (info_zei, pushed, normal, true) ;
  132.   IF pushed = swurm THEN Do_Show_Wurminfo ;
  133.   End_Dialog (info_zei) ;
  134.  END ;
  135.  
  136.  
  137. {---- Do_Show_Help -----------------------------------------------------------}
  138.  
  139. PROCEDURE Do_Show_Help ;
  140.  
  141.  BEGIN
  142.   pushed := Do_Dialog (help_zei, 0) ;
  143.   Obj_SetState (help_zei, pushed, normal, true) ;
  144.   End_Dialog (help_zei) ;
  145.  END ;
  146.  
  147.  
  148. {---- Str_Wandel : Wandelt Integerzahlen in Strings um -----------------------}
  149.  
  150. PROCEDURE Str_Wandel (zahl : integer ; VAR zeichenkette : str255) ;
  151.  
  152.  VAR
  153.   e, z, h, help : integer ;
  154.  
  155.  BEGIN
  156.   help := zahl ;
  157.   h    := TRUNC (help / 100  + 1E-6) ;
  158.   help := help - h * 100 ;
  159.   z    := TRUNC (help / 10   + 1E-6) ;
  160.   e    := help - z * 10 ;
  161.   zeichenkette := CONCAT (CHR(h+48),CHR(z+48),CHR(e+48)) ;
  162.   help := TRUNC (1 + ABS ((LN (zahl+0.5) / LN (10)))) ;
  163.   DELETE  (zeichenkette, 1, 3 - help) ;
  164.  END ;
  165.  
  166.  
  167. {---- Do_Aktualisieren : Setzt neuen Wert in die Dialogbox -------------------}
  168.  
  169. PROCEDURE Do_Aktualisieren (dialog : Dialog_Ptr ; feld, wert : integer) ;
  170.  
  171.  VAR  zeile     : str255 ;
  172.  
  173.  BEGIN
  174.   Str_Wandel (wert, zeile) ;
  175.   Set_DText  (dialog, feld, zeile, System_Font, TE_Center) ;
  176.   Obj_SetState (dialog, feld, disabled, false) ;
  177.   Obj_SetState (dialog, feld, normal, true) ;
  178.  END ;
  179.  
  180.  
  181. {======================  Window - Verwaltung  ================================}
  182.  
  183. {======================      Sonstiges        ================================}
  184.  
  185.  
  186. {---- Do_Screen_Aktualisieren : Setzt Bildschirminhalt neu -------------------}
  187.  
  188. PROCEDURE Do_Screen_Aktualisieren ;
  189.  
  190.  BEGIN
  191.   Hide_Mouse ;
  192.   {$P-}
  193.   bild_ptr^ := bild ;
  194.   {$P=}
  195.   Show_Mouse ;
  196.  END ;
  197.  
  198. {---- Do_Merken : Setzt aktuellen Bildschirm in ARRAY ------------------------}
  199.  
  200. PROCEDURE Do_Merken ;
  201.  
  202.  BEGIN
  203.   Hide_Mouse ;
  204.   {$P-}
  205.   bild := bild_ptr^ ;
  206.   {$P=}
  207.   Show_Mouse ;
  208.  END ;
  209.  
  210.  
  211.